home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / qdpmi101.zip / QDPMI.DOC < prev    next >
Text File  |  1993-01-04  |  22KB  |  508 lines

  1.   =========================================================================
  2.                           Quarterdeck Office Systems
  3.                                QDPMI Host V1.01
  4.  
  5.   =========================================================================
  6.   NOTICE TO END USERS: THIS SOFTWARE MAY BE FREELY COPIED, HOWEVER YOUR
  7.   ACTUAL USE OF QDPMI IS CONDITIONED UPON (i) YOUR POSSESSION OF AN
  8.   AUTHORIZED COPY OF QEMM-386 AND (ii) YOUR COMPLIANCE WITH THE TERMS OF
  9.   THE QEMM-386 QUARTERDECK END USER LICENSE AGREEMENT, WHICH GOVERNS USE OF
  10.   THIS SOFTWARE.
  11.  
  12.   Copyright (c) Quarterdeck Office Systems, Inc. 1986-1992.  ALL RIGHTS
  13.   RESERVED.  DOS Extension Technology by ERGO Computing, Inc. Copyright (c)
  14.   1991-1992.  ALL RIGHTS RESERVED.
  15.   =========================================================================
  16.  
  17.  
  18. INTRODUCTION
  19. ------------
  20.  
  21. The Quarterdeck DPMI Host (QDPMI) is a companion product to the Quarterdeck 
  22. Expanded Memory Manager-386 (QEMM-386). It is a full implementation of 
  23. Version 0.9 of the DOS Protected Mode Interface (DPMI) specification, 
  24. including MS-DOS extensions and virtual memory.
  25.  
  26. DPMI is an emerging industry standard for allowing DOS applications
  27. to access the protected mode features of the 80386 and 80486 processors.
  28. To DOS application users this means that an application can now be
  29. larger and more full featured than those applications restricted to
  30. 640K.
  31.  
  32. The DPMI specification was developed by a consortium of computer companies,
  33. including Quarterdeck, Borland, Ergo, IBM, Intel, Intelligent Graphics,
  34. Locus, Lotus Development, Microsoft, Phar Lap, Phoenix Technologies
  35. and Rational Systems.
  36.  
  37. Protected mode multitasking environments, memory managers, or operating
  38. systems that implement DPMI functions are called DPMI hosts. Protected
  39. mode applications that request DPMI functions (directly or indirectly)
  40. are called DPMI clients.
  41.  
  42. DOS applications using DPMI (DPMI clients) can run in a variety of
  43. operating environments, including DOS, DR DOS, Microsoft Windows,
  44. OS/2, 386-based UNIX, DESQview 386 and DESQview/X provided a
  45. DPMI host is present.
  46.  
  47. The Quarterdeck DPMI Host (QDPMI) provides mode-switching and extended
  48. memory management to DPMI clients. It runs at a more privileged level
  49. than its clients and uses the hardware to enforce a supervisor/user
  50. protection model. This allows QDPMI to support centralized virtual
  51. memory and maintain full control over client programs' address spaces
  52. and access to hardware.
  53.  
  54. Users of Quarterdeck's DESQview 386 and DESQview/X can run multiple QDPMI 
  55. clients simultaneously, each optionally having its own virtual memory.
  56.  
  57.  
  58. Software Compatibility
  59. ----------------------
  60.  
  61. DOS applications that support the DPMI specification are just coming
  62. to market. The earliest of these are programmer's tools including 
  63. Microsoft's C/C++ Development System for Windows (version 7), Borland's C++ 
  64. (version 3) and Intel's Code Builder Kit (version 1.1). QDPMI is compatible 
  65. with the above programs.
  66.  
  67. Microsoft Windows version 3.1 includes its own DPMI host. When QDPMI sees 
  68. Windows Enhanced Mode start up, it steps aside, letting Windows provide the 
  69. DPMI services for programs running in its environment.
  70.  
  71.  
  72. About This Manual
  73. -----------------
  74.  
  75. This manual is your reference guide to the Quarterdeck DPMI Host (QDPMI). 
  76. This manual tells you:
  77.  
  78.      o    How to install QDPMI.
  79.  
  80.      o    How to specify whether virtual memory is to be used and the amount 
  81.           of virtual memory to be reserved.
  82.  
  83.      o    About the command line parameters available with QDPMI.
  84.  
  85. The Quarterdeck DPMI Host (QDPMI) requires the Quarterdeck Expanded
  86. Memory Manager (QEMM-386) for its services to be made available to
  87. DPMI client programs. So before you install QDPMI, please check that
  88. QEMM-386 is installed on your system.
  89.  
  90. Installing QDPMI is easy. All you must do is run the QDPMI installation
  91. program, INSTALL.
  92.  
  93. During installation, INSTALL will display several screens, either
  94. to ask for information or to inform you of its progress. If QEMM-386 is not 
  95. currently installed in your system, INSTALL will post a warning message, 
  96. telling you that QEMM-386 was not found in your CONFIG.SYS file and telling 
  97. you to install it. As mentioned earlier, QDPMI will not work without QEMM-
  98. 386.
  99.  
  100. INSTALL will need to know where to copy QDPMI files. The default drive and 
  101. directory is C:\QEMM.  Next INSTALL will ask you whether you would like QDPMI 
  102. to provide virtual memory support for each DPMI client you run. If you answer 
  103. Yes, you must then indicate how much disk space should be allocated for the 
  104. virtual memory swap file. The default is 1024K per DPMI client.
  105.  
  106. When QDPMI uses virtual memory, it creates a virtual memory swap file.
  107. INSTALL next asks you whether QDPMI should automatically delete the
  108. virtual memory swap file when your application terminates. Creating and 
  109. deleting the virtual memory swap file takes more time, but conserves disk 
  110. space. 
  111.  
  112. When you have answered the above questions, INSTALL automatically
  113. creates the necessary change to your AUTOEXEC.BAT and CONFIG.SYS files 
  114. needed by DOS to load QDPMI, and offers to modify these files for you. Then 
  115. it copies the QDPMI files to the drive and directory you indicated.
  116.  
  117.  
  118. Installing QDPMI from floppy
  119. ----------------------------
  120.  
  121. To install QDPMI from the QDPMI diskette:
  122.  
  123. Place the QDPMI disk in drive A.
  124.  
  125. Type A:INSTALL and press Enter.
  126.  
  127.  
  128. Installing QDPMI by downloading from the Quarterdeck BBS
  129. --------------------------------------------------------
  130.  
  131. If you have downloaded the QDPMI files from a Quarterdeck bulletin
  132. board into a drive/directory on your hard disk:
  133.  
  134. Change to the drive and directory where the QDPMIZIP.EXE file you
  135. downloaded from the bulletin board is stored.
  136.  
  137. Type QDPMIZIP and press Enter.
  138.  
  139.      NOTE: QDPMIZIP.EXE is a self-extracting zip file that when run will 
  140.            extract three files, INSTALL.EXE, LICENSE.TXT, and QDPMI.QIP
  141.            into the current directory.
  142.  
  143. Now type INSTALL and press Enter.
  144.  
  145.  
  146. QDPMI Installation Program
  147. --------------------------
  148.  
  149.      NOTE: If you have an LCD or Gas Plasma display, as on some laptops, or 
  150.            a monochrome monitor, we recommend that you run INSTALL in 
  151.            monochrome mode by typing X:INSTALL/m (where X: is the drive and 
  152.            directory containing the QDPMI files.
  153.  
  154. Follow the instructions on the screen. INSTALL copies the QDPMI files
  155. to your hard disk and configures QDPMI.
  156.  
  157. It is always a good idea when making changes to your system configuration
  158. to run QEMM-386's Optimize program after making your changes. This
  159. will insure the best use of your system's memory.
  160.  
  161. After successfully completing the QDPMI installation procedure, it
  162. will be necessary to reboot your system to begin using QDPMI.
  163.  
  164. If you want to check that DPMI is working, typing QDPMI at the DOS command 
  165. line without any parameters will display the current status of QDPMI.
  166.  
  167. That's all there is to installing QDPMI.
  168.  
  169.  
  170. Installation Notes
  171. ------------------
  172.  
  173.  
  174. QDPMI Client Initialization with Virtual Memory
  175. -----------------------------------------------
  176.  
  177. At DPMI client initialization time (when an application that requires
  178. DPMI services is run), QDPMI will attempt to create the virtual memory
  179. swap file whose name and maximum size appear in the QDPMI environment 
  180. variable. If the swap file name is not specified in the QDPMI environment 
  181. variable, the file will be opened or created in the directory from which 
  182. QDPMI.SYS was loaded at system startup, with the base name QDPMI.SWP.
  183.  
  184. If the swap file exists, it will be used. Its existing size will be truncated 
  185. to zero length, and increased as needed by QDPMI. 
  186.  
  187. If the KILLSWAP option is specified, QDPMI will delete the virtual
  188. memory swap file upon the termination of the DPMI client application.
  189.  
  190. In multitasking environments such as DESQview and DESQview/X, each task or 
  191. DESQview window can have its own unique set of QDPMI switches and QDPMI 
  192. environment variable options in force.
  193.  
  194. It is necessary that each simultaneously executing DPMI client application 
  195. utilizing virtual memory have its own unique virtual memory swap file. The 
  196. name of the swap file that is provided in the QDPMI environment variable is 
  197. therefore modified by QDPMI before it is opened or created, by appending a 
  198. digit to the end of its base name. For example: QDPMI.SWP would become 
  199. QDPMI0.SWP, and QDPMISWP.SWP would become QDPMISW0.SWP. The actual digit 
  200. will vary depending on whether DESQview is active or not, and how many other 
  201. DPMI clients are active in other DOS partitions.
  202.  
  203. If for some reason QDPMI cannot find or create its virtual memory swapfile, 
  204. it will issue a message and disable the virtual memory feature for the 
  205. current client's invocation. Causes for this may be:
  206.  
  207.      o    Insufficient disk space.
  208.  
  209.      o    Improperly specified Swap File name (QDPMI environment variable).
  210.  
  211.      o    Non-existent directory specified.
  212.  
  213.  
  214. System Interrupt Stack Configuration
  215. ------------------------------------
  216.  
  217. It is important for some applications that a line exist in CONFIG.SYS 
  218. setting up system interrupt stack configuration. The suggested values are:
  219.  
  220.      stacks = 9,256
  221.  
  222. This means that DOS should allocate nine system stacks, each 256 bytes in 
  223. size.
  224.  
  225. The default for this setting is:
  226.  
  227.      stacks = 9,128
  228.  
  229. Under QDPMI, this may not be sufficient.
  230.  
  231.  
  232. Novell Netware
  233. --------------
  234.  
  235. QDPMI has the capability to support either 16- or 32- bit DPMI clients. When a 
  236. 32 bit client is executing, it expects all 32 bits of the processor's 32- bit 
  237. registers to be preserved across interrupts. There are some device drivers and 
  238. TSRs that utilize the 80x86's 32 bit registers, but do not preserve them, 
  239. causing undesirable erratic behavior of 32 bit DPMI clients. A notable example 
  240. is Novell's LAN WorkPlace for DOS v4.01 (TCPIP.EXE). Running the supplied TSR 
  241. program LWPFIX.COM after loading the LAN WorkPlace TCPIP driver will prevent 
  242. this erratic behavior.
  243.  
  244.      NOTE: Novell has addressed this problem, and later releases will have 
  245.            the appropriate corrections.
  246.  
  247.  
  248. Borland C/C++ 3.1
  249. -----------------
  250.  
  251. Borland's compiler can allocate memory through both EMS and DPMI APIs.  Since 
  252. QDPMI hasn't the means to limit EMS allocation by its clients, it is possible 
  253. for QDPMI's memory resources to be depleted without QDPMI's knowledge.  This 
  254. can be prevented however by limiting the EMS usage of the compiler through the 
  255. use of the Borland compile-time switch -Qe=xxxx or -Qe-.  The former tells 
  256. Borland's compiler not to exceed xxxx K of EMS memory for use as a swap 
  257. buffer.  The latter tells the compiler to use NO EMS for swapping purposes 
  258. when compiling.  The recommended setting is -Qe-, as all necessary swapping 
  259. will be performed by QDPMI.
  260.  
  261.  
  262. QDPMI Reference
  263. ---------------
  264.  
  265. This chapter is the reference guide for command line parameters used
  266. with both QDPMI.SYS as well as QDPMI.COM programs. This chapter also
  267. explains the way to use the QDPMI environment variable to further
  268. control QDMPI's behavior.
  269.  
  270.  
  271. QDPMI Command Line Parameters
  272. -----------------------------
  273.  
  274. Both QDPMI.SYS and QDPMI.COM respond to the same set of command line
  275. parameters. Command line parameters may be used on the QDPMI device
  276. driver line in CONFIG.SYS to initially set QDPMI's options.  QDPMI.COM
  277. may also be used to modify any or all QDPMI's options from the DOS command 
  278. line at a later time.
  279.  
  280. To use a QDPMI.SYS command line parameter, you type the parameter name on the 
  281. same line as DEVICE=C:\QEMM\QDPMI.SYS in your CONFIG.SYS file. To use a 
  282. QDPMI.COM command line parameter you type QDPMI followed by the parameter name 
  283. at the DOS prompt. You may use an abbreviation instead of the parameter name. 
  284. The abbreviation for each QDPMI command line parameter is shown below in 
  285. parentheses after each parameter name.
  286.  
  287.  
  288. The QDPMI command line parameters are:
  289.  
  290.      DPMI     (ON)     turns DPMI 0.9 services on. This is a default 
  291.                        setting.
  292.  
  293.      NODPMI   (OFF)    turns DPMI services off.
  294.  
  295.      VMON     (VM)     turns QDPMI virtual memory on. This is the default 
  296.                        setting.
  297.  
  298.      VMOFF    (NOVM)   turns QDPMI virtual memory off.
  299.  
  300.      KILLSWAP (KLSW)   causes the QDPMI host to delete its virtual memory 
  301.                        swap file at the termination of the DPMI client 
  302.                        application. This is the default setting.
  303.  
  304.      KEEPSWAP (KPSW)   causes the QDPMI host not to delete its virtual 
  305.                        memory swap file at the termination of the DPMI 
  306.                        client application.
  307.  
  308.      EXTCHKON (XCHK)   causes the QDPMI host to step out of the way for 
  309.                        incompatible DOS extenders that prefer to do all of 
  310.                        their own DOS extender work in their own way. This is 
  311.                        the default setting.
  312.  
  313.      EXTCHOFF (NOXCHK) causes the QDPMI host not to step out of the way for 
  314.                        incompatible DOS extenders that prefer to do all of 
  315.                        their own DOS extender work in their own way.
  316.  
  317.      OVLDIR=<path>     Specifies where QDPMI will look for its QDPMIVM.OVL 
  318.                        file at DPMI client initialization.  This defaults to 
  319.                        the same directory from which QDPMI.SYS was loaded at 
  320.                        system initialization.  Under some network 
  321.                        implementations such as diskless workstations however, 
  322.                        this initial path may cease to exist after the system 
  323.                        is initialized.  Use this switch tell QDPMI where to 
  324.                        look for QDPMIVM.OVL at DPMI client initialization in 
  325.                        such cases.
  326.  
  327.  
  328. The QDPMI Environment Variable
  329. ------------------------------
  330.  
  331. QDPMI looks at an environment variable to determine information regarding
  332. its configuration. The environment variable is QDPMI. Its syntax is
  333. as follows:
  334.  
  335. SET QDPMI=[MAXLOW <aaaa>] [MINMEM <bbbb>] [MAXMEM <cccc>] [SWAPFILE 
  336. <filename> [dddd]]
  337.  
  338.      NOTE: The environment variable line must appear in your AUTOEXEC.BAT 
  339.            file as one line.
  340.  
  341. The QDPMI environment variable is not required to be set for QDPMI's 
  342. services to be utilized. QDPMI will use a set of default values in the 
  343. absence of user specified ones. All individual parameters within the QDPMI 
  344. environment variable are also optional, and may be specified in any order. 
  345.  
  346. MAXMEM <cccc>  is the maximum number of kilobytes of physical memory that 
  347.                will be reserved by QDPMI. This can be any number up to the 
  348.                amount of physical memory available on your system, and 
  349.                will be allocated from VCPI, XMS, extended, and conventional 
  350.                memory resources, in that order. The memory used by QDPMI 
  351.                includes all memory for use by its code, data, and page 
  352.                tables, as well as memory requested for use by the DPMI 
  353.                client application. If MAXMEM is greater than the available 
  354.                physical memory, or greater than external limits placed on 
  355.                extended memory resources by multitaskers such as DESQview, 
  356.                MAXMEM will be adjusted downward to be within those limits. 
  357.                The default value is the total amount of physical memory 
  358.                installed in yours system. If omitted or explicitly set to 
  359.                zero, MAXMEM is set to the largest value supported on your 
  360.                system. This will either be the size of all of your physical 
  361.                memory, or that which is available to the current partition of 
  362.                DESQview, whichever is smaller.
  363.  
  364. MINMEM <bbbb>  is the amount of physical memory in kilobytes that will be 
  365.                reserved by QDPMI immediately upon DPMI client application 
  366.                initialization for use by the QDPMI kernel itself.  QDPMI 
  367.                will not initialize if less than this amount of memory is 
  368.                available for its use.
  369.  
  370.                The default value for MINMEM varies depending on the amount of 
  371.                physical memory installed in your computer, and whether you 
  372.                are using QDPMI's Virtual Memory features. Any 
  373.                attempt to set MINMEM to a value lower than 
  374.                QDPMI's calculated minimum will result in QDPMI 
  375.                ignoring the request, and using its own calculated 
  376.                MINMEM value.
  377.  
  378.                MAXMEM must be greater than or equal to MINMEM, regardless of 
  379.                whether it was user specified or internally calculated. If 
  380.                this is not the case, QDPMI will exit with a message 
  381.                indicating that insufficient memory is available for its 
  382.                initialization.
  383.  
  384.                The difference between MAXMEM and MINMEM is the amount of 
  385.                memory that will be managed dynamically by QDPMI, and made 
  386.                available to other applications (including other DPMI clients) 
  387.                when freed. This dynamic memory pool is managed through the 
  388.                use of VCPI memory only.
  389.  
  390. MAXLOW <aaaa>  is the maximum number of kilobytes of conventional DOS memory 
  391.                allowed to be reserved by QDPMI for use as its memory 
  392.                resources. Setting it to any non-zero value will allow QDPMI 
  393.                to allocate DOS conventional memory for use in its memory 
  394.                pool. Note that QDPMI will only resort to using DOS 
  395.                conventional memory if expanded and extended memory resources 
  396.                are insufficient to satisfy the MINMEM request. The default 
  397.                value is 0. Conventional memory is only used if MINMEM cannot 
  398.                be satisfied from other resources, and only if this value is 
  399.                non-zero.
  400.  
  401. SWAPFILE <filename> [<dddd>] is the base name of the virtual memory swapfile 
  402.                that QDPMI will use, optionally followed by its maximum size 
  403.                in kilobytes. The size of the virtual memory swapfile that you 
  404.                specify may be any value up to 64 megabytes, and defaults to 
  405.                1MB.
  406.  
  407.  
  408. Virtual Memory Total Memory Size
  409. --------------------------------
  410.  
  411. The SUM of the value of MAXMEM and the maximum size of the virtual swapfile 
  412. is the amount of virtual memory (in kilobytes) available to QDPMI client 
  413. applications when the virtual memory option is enabled.
  414.  
  415.  
  416. Error Messages
  417. --------------
  418.  
  419. QDPMI may display error messages when trying to load QDPMI or when trying to 
  420. initialize a DPMI client. In addition, error messages may also be generated by 
  421. the QDPMI kernel or the DOS extender.
  422.  
  423.  
  424. QDPMI.COM error messages are as follows:
  425. ----------------------------------------
  426.  
  427. QDPMI: Client already active -- Cannot modify parameters.
  428.      A DPMI client has spawned COMMAND.COM, and is still active in the 
  429.      current DOS partition. It is inappropriate to change QDPMI parameters 
  430.      while a QDPMI client is currently running. This condition can sometimes 
  431.      be caused by the abnormal termination of a DPMI client.
  432.  
  433. QDPMI: Already supported -- Not reloaded.
  434.      Another DPMI Host other than Quarterdeck's has been detected. 
  435.      Quarterdeck's QDPMI is not loaded.
  436.  
  437. QDPMI: Version incompatibility error -- Re-install or use same version.
  438.      This message only appears if the device driver QDPMI.SYS and the 
  439.      utility program QDPMI.COM are not the same version. This is an error in 
  440.      installation or updating. You must re-install QDPMI.
  441.  
  442. QDPMI: Cannot locate QEMM386.SYS Memory Manager -- Not loaded.
  443.      Quarterdeck's QDPMI Host will only function in conjunction with 
  444.      Quarterdeck's QEMM-386 Memory Manager.
  445.  
  446. QDPMI: Error accessing XDI -- Not loaded.
  447.      The QDPMI Host has encountered an error initializing its XDI interface 
  448.      and cannot load.
  449.  
  450. QDPMI: Too Many DPMI Processes -- Not loaded.
  451.      The QDPMI Host has the capability of supporting up to 15 concurrent 
  452.      processes under DESQview and DESQview/X. If there are more than 15 
  453.      windows on the screen, and a DPMI client is started in the 16th or higher 
  454.      window, the DPMI client will fail to initialize, and QDPMI.COM will 
  455.      display this message if run in this window.
  456.  
  457. QDPMI: Overlay File Path/Name is too long.
  458.      The QDPMIVM.OVL files (and their paths) are too long. Use a path less 
  459.      removed from the root.
  460.  
  461. QDPMI: Quarterdeck QDPMI Host is not resident.
  462.      QDPMI.COM issues this message if run without having previously loaded 
  463.      QDPMI.SYS in CONFIG.SYS.
  464.  
  465.  
  466. QDPMI client initialization messages are as follows:
  467. ----------------------------------------------------
  468.  
  469. QDPMI: Open Error.
  470.      QDPMI could not open its overlay file QDPMIVM.OVL. You should make sure 
  471.      that it is either in the same directory as QDPMI.SYS, or in the 
  472.      directory specified by the OVLDIR parameter on the QDPMI command line.
  473.  
  474. QDPMI: Processor Error.
  475.      QDPMI must have an 80386 or higher processor in order to run.
  476.  
  477. QDPMI: Read Error.
  478.      QDPMI cannot read its overlay file QDPMIVM.OVL.
  479.  
  480. QDPMI: Seek Error.
  481.      QDPMI can not seek in its overlay file QDPMIVM.OVL.
  482.  
  483. QDPMI: Close Error.
  484.      QDPMI can not close its overlay file QDPMIVM.OVL.
  485.  
  486. QDPMI: Bad .OVL Error.
  487.      QDPMIVM.OVL file is corrupted.
  488.  
  489. QDPMI: Exec Error.
  490.      QDPMI could not transfer control to its overlay.
  491.  
  492. QDPMI: Init Error.
  493.      QDPMIVM.OVL could not complete its initialization.
  494.  
  495. QDPMI: Mode Error.
  496.      The QDPMI client is attempting to re-initialize the QDPMI Host in 
  497.      another mode (16/32 bit) than it was originally initialized. This can 
  498.      occur if an attempt is made to start a DPMI client of another "bitness" than the 
  499.      currently running DPMI client.
  500.  
  501. QDPMI: Task Error.
  502.      The maximum of 15 simultaneous DPMI clients are already running in 
  503.      other DESQview or DESQview/X windows.
  504.  
  505. QDPMI: Version Error.
  506.      There is a discrepancy between the QDPMI version of the device driver 
  507.      (QDPMI.SYS), and the kernel (QDPMIVM.OVL).
  508.